// 生成器函数
// yield关键词会返回一个对象,value表示修饰的值,done表示生成器是否执行完成
function* foo() {
    try {
        console.log("start");
        const res = yield "foo";
        console.log(res);
        yield "boo";
        console.log("end");
    } catch (err) {
        console.log(err);
    }
}
// 生成器不会立即执行,需要next才会执行
const generator = foo();
// 第一次next会返回yield修饰的值
const result = generator.next();
console.log(result);

// 之后的next()会从暂停的yield后继续进行,执行到下一个yield的位置,如果next有传入参数,则对应的yield的返回值就是next传入的参数
const result2 = generator.next(3);
console.log(result2);
// 如果手动调用了生成器的throw函数,则生成器内部就会得到异常 try,catch 捕获异常
// generator.throw(new Error("Generator error"));
